package cn.csc.framework.pay.core.client.impl.lkl;

import cn.csc.framework.pay.core.client.PayClientConfig;
import lombok.Data;

import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import javax.validation.constraints.NotBlank;
import java.util.Set;

/**
 * 拉卡拉支付配置类
 * @author liuchuang
 * @version 1.0
 * @description
 * @date 2023/4/3 11:50
 * @modify
 */
@Data
public class LKLPayClientConfig implements PayClientConfig {

    @NotBlank(message = "APPID不能为空")
    private String appId;

    /**
     * 证书序列号
     */
    @NotBlank(message = "证书序列号不能为空")
    private String serialNo;

    /**
     * 商户号
     */
    @NotBlank(message = "商户号不能为空")
    private String merchantNo;

    /**
     * 终端号
     */
    @NotBlank(message = "终端号不能为空")
    private String termNo;

    /**
     * 渠道号 （用于接收订单通知报文，拉卡拉开通）
     */
    private String channelId;

    /**
     * 商户秘钥字符串内容
     */
    @NotBlank(message = "商户秘钥不能为空")
    private String privateKey;

    /**
     * 拉卡拉平台证书
     */
    @NotBlank(message = "拉卡拉平台证书不能为空")
    private String certificate;

    /**
     * 拉卡拉平台通知验签证书
     * 验签证书和certificate一致
     */
    private String notifyCertificate;

    /**
     * 拉卡拉平台API地址
     */
    private String serverUrl;



    @Override
    public Set<ConstraintViolation<PayClientConfig>> verifyParam(Validator validator) {
        return validator.validate(this);
    }

    @Override
    public void validate(Validator validator) {
        PayClientConfig.super.validate(validator);
    }
}
